#ifndef _MUSIC_GUI_H_
#define _MUSIC_GUI_H_

#ifdef __cplusplus
extern "C"
{
#endif

#include "lvgl.h"

typedef enum 
{
    MusicMode_ListLoop = 0, // 列表循环
    MusicMode_SingleLoop,   // 单曲循环
    MusicMode_Random,       // 随机播放
}MusicMode;

typedef void (*exit_cb_t)(lv_event_t *);
typedef int (*music_get_state_t)(void);
typedef void (*music_pause_t)(void);
typedef void (*music_play_t)(const char *, int);
typedef void (*music_set_cur_t)(int);
typedef void (*music_get_volume_t)(int *, int *);
typedef void (*music_set_volume_t)(int);
typedef MusicMode (*music_get_mode_t)(void);
typedef void (*music_set_mode_t)(MusicMode);

typedef struct _gui_opt
{
    exit_cb_t exit_cb;
    music_get_state_t music_get_state;   // 获取当前音乐状态回调函数
    music_pause_t music_pause;           // 当前音乐暂停回调函数
    music_play_t music_play;             // 音乐播放回调函数
    music_set_cur_t music_set_cur;       // 音乐设置进度回调函数
    music_get_volume_t music_get_volume; // 获取音乐音量回调函数
    music_set_volume_t music_set_volume; // 设置音乐音量回调函数
    music_get_mode_t music_get_mode;     // 获取当前播放模式回调函数
    music_set_mode_t music_set_mode;     // 获取当前播放模式回调函数
} gui_opt_t;

void music_gui_init(gui_opt_t *opts);
void music_gui_add_music_list(const char *name);
void music_gui_set_progress(int cur, int total);
void music_gui_load_lyric(const char *lyric);
void music_gui_set_lyric_id(int id);
const char *music_gui_get_music_name(int index);
void music_gui_show_music_name(const char *name);
void music_gui_release(void);

#ifdef __cplusplus
}
#endif

#endif
